package com.xframe.xdal.core.annotation;


import java.lang.annotation.*;

/**
 * 数据库字段信息对应的注解
 *
 * @author xufeng
 * @version 1.0
 * @date 2022-09-19
 */
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD, ElementType.ANNOTATION_TYPE})
public @interface XColumn {



    /**
     * 列名称
     */
    String name() default "";

    /**
     * 列描述
     */
    String desc() default "";

    /**
     * 是否主键
     */
    boolean primaryKeyFlag() default false;

    /**
     * 是否唯一索引
     */
    boolean uniqueFlag() default false;
    /**
     * 唯一标识名字(名字相同的是一组)
     */
    String uniqueName() default "MAIN";

    /**
     * 是否使用的数据库表达式
     */
    boolean useDbObjectFlag() default false;

    /**
     * 使用的数据库表达式
     */
    String dbExpression() default "";

    /**
     * 数据库字段的长度
     */
    int length() default 0;

    /**
     * 是否删除标识
     */
    boolean deleteFlag() default false;

    /**
     * 是否可以为空
     */
    boolean nullFlag() default false;

    /**
     * 是否包含数据库自动生成的值
     */
    boolean dbGeneratedFlag() default false;

    /**
     * 是否版本号(并发冲突使用)
     */
    boolean versionFlag() default false;

    /**
     * 是否只读,是否能够修改
     */
    boolean readonly() default false;

    /**
     * 唯一键名称
     */
    String akGroupName() default "";

    int scale() default 0;
}
